<?php include('header.php')?>
        <!-- Page Title -->
        <div class="page-title1">
            <div class="container">
				<div class="well5">
					<div class="row">
						<div class="span12">
							<h3><span class="heigh_let_col">Expertise </span> / Zend Framework <?php if($current_city_title){ echo ucfirst($current_city_title);} else{ echo ""; } ?> </h3>
						</div>
					</div>
				</div>
            </div>
        </div>
<div class="what-we-do container">
	<div class="row">
		<div class="span99">
			<?php include('expertise-sub-header.php');?>
		</div>
		<div class="span9">
			<div class="about-us-text">          
				<p class="paline_jsf">Zend Framework 2 is an open source framework for developing web applications and services using PHP 5.3+.</p>
				
				<p class="paline_jsf">Zend Framework 2 uses 100% object-oriented code and utilises most of the new features of PHP 5.3,
				namely namespaces, late static binding, lambda functions and closures.</p>

				<p class="paline_jsf">The component structure of Zend Framework 2 is unique; each component is designed with few dependencies
				on other components.</p>
				
				<p class="paline_jsf">ZF2 follows the SOLID object oriented design principle. This loosely coupled architecture
				allows developers to use whichever components they want. We call this a “use-at-will” design.</p>
				
				<h4>Our experience</h4>

				<p class="paline_jsf"><strong>Zf2 master slave replications:</strong></p>

					<p class="paline_jsf">Database replication can be used on many database management systems, usually with a master/slave relationship
					between the original and the copies. The master logs the updates, which then ripple through to the slaves.</p>
					
					<p class="paline_jsf">The slave outputs a message stating that it has received the update successfully, thus allowing the sending 
					(and potentially re-sending until successfully applied) of subsequent updates.</p>

					<p class="paline_jsf">Multi-master replication, where updates can be submitted to any database node, and then ripple through
					to other servers, is often desired, but introduces substantially increased costs and complexity which may make
					it impractical in some situations.</p>
					
					<p class="paline_jsf">The most common challenge that exists in multi-master replication is transactional conflict prevention or resolution. Most synchronous or eager replication solutions do conflict
					prevention,	while asynchronous solutions have to do conflict resolution. For instance, if a record is changed on two nodes simultaneously, an eager replication system would detect the
					conflict before confirming the commit and abort one of the transactions.</p>

					<p class="paline_jsf">A lazy replication system would allow both transactions to commit and run a conflict resolution during resynchronization. The resolution of such a conflict
					may be based on a timestamp of the transaction, on the hierarchy of the origin nodes or on much more complex logic,
					which decides consistently on all nodes.</p>

				 <p class="paline_jsf"><strong>Session with database using Zf2 db session handling:</strong></p>

					<p class="paline_jsf">Wanting to modify its behavior from time to time. One of the most common reasons for wanting to change the
					default behavior is to store sessions in a database rather than the file-system.</p>

					<p class="paline_jsf"><strong>The top reasons for this desire are:</strong></p>

					<p class="paline_jsf">The application needs to be able to run on multiple servers without server affinity (methods that direct requests
					from the same client to the same server). An easy way to make sure that sessions continue to work properly
					is to store sessions in a central database that is common to all servers.</p>

                    <p class="paline_jsf">The application needs to be able to run on a shared host, where there are significant security concerns associated
					with storing session data in the file-system.</p>

					<p class="paline_jsf">The performance needs of the application are very demanding and require a more sophisticated storage solution for
					session data.</p>

				<p class="paline_jsf"><strong>Cache implementation using zf2 memcached to handle repeated content in application:</strong></p>

					<p class="paline_jsf">Free & open source, high-performance, distributed memory object caching system, generic in nature, but intended
					for use in speeding up dynamic web applications by alleviating database load.</p>

					<p class="paline_jsf">Memcached is an in-memory key-value store for small chunks of arbitrary data (strings, objects) from results
					of database calls, API calls, or page rendering.</p>

					<p class="paline_jsf">Memcached is simple yet powerful. Its simple design promotes quick deployment, ease of development, and
					solves many problems facing large data caches. Its API is available for most popular languages.</p>

				<h4>Load balancing</h4>

					<p class="paline_jsf">Load balancing is a core networking solution responsible for distributing incoming traffic among servers hosting
					the same application content. By balancing application requests across multiple servers, a load balancer prevents
					any application server from becoming a single point of failure, thus improving overall application availability
					and responsiveness. For example, when one application server becomes unavailable, the load balancer simply directs
					all new application requests to other available servers in the pool.</p>

					<p class="paline_jsf">Load balancers also improve server utilization and maximize availability. Load balancing is the most
					straightforward method of scaling out an application server infrastructure. As application demand increases,
					new servers can be easily added to the resource pool, and the load balancer will immediately begin sending traffic 
					to the new server.</p>


			</div>
		</div>
	</div>
</div>
<!-- Footer -->
 <?php include('footer.php')?>

